import { Status } from './sys'

export interface OptionsCallback {
  /** 成功 */
  successLogin?: () => void
  /** 二次企业二维码验证 */
  needSecondaryQrcode?: () => void
  /** 是否需要扫码 */
  needQrcode?: () => void
  /** 扫描二维码 */
  scanQrcode?: (status: Status) => void
  /** 是否需要验证码 */
  needCode?: () => void
}

/**
 * 登录相关数据
 */
export interface ILoginModel {
  /** iPad 实例 uuid */
  uuid: string

  /** 是否需要扫描二维码：0=否，1=是 */
  need_qrcode: Status

  /** 二维码扫描结果：0=未成功，1=已成功 */
  qrcode_status: Status

  /** 是否需要输入验证码：0=否，1=是 */
  need_code: Status

  /** 验证码结果：0=未通过，1=已通过 */
  code_status: Status

  /** 是否需要再次扫描二维码验证：0=否，1=是 */
  need_secondary_qrcode: Status

  /** 再次扫描二维码验证结果：0=未成功，1=已成功 */
  secondary_qrcode_status: Status

  /**
   * 登录状态
   * 0=未登录
   * 1=登录成功
   * 2=登录失败
   * 3=已退出登录
   */
  status: LoginStatus

  /** 登录失败的原因 */
  error: string
}

/**
 * 登录状态
 */
export enum LoginStatus {
  /** 0=未登录 */
  Unlogged = 0,
  /** 1=登录成功 */
  Success = 1,
  /** 2=登录失败 */
  Failed = 2,
  /** 3=已退出登录 */
  LoggedOut = 3,
}
